package cn.edu.jxau.test;

import java.util.Arrays;
import java.util.Objects;

/**
 * @author Fudashi
 */
public class Main {

	public static void main(String[] args) {

		char[] str = new char[] { 'w', 'e', ' ', 'a', 'r', 'e', ' ', 'h', 'a', 'p', 'p', 'y', 0, 0, 0, 0, 0, 0, 0, 0,
				0, 0};
		System.out.println(Arrays.toString(str));
		replace(str);
		System.out.println(Arrays.toString(str));
	}

	private static void replace(char[] str) {

		// 参数校验 //
		Objects.requireNonNull(str, "参数str不能为null");
		if (str.length == 0) { // 空数组
			return;
		}

		// 计算空格数 //
		int spaceCounter = 0; // 空格数
		int len = 0;// 有效长度
		for (int i = 0; i < str.length && str[i] != 0; i++, len++) {
			if (str[i] == ' ') {
				spaceCounter++;
			}
		}
		if (spaceCounter == 0) { // 空格数为0，无需replace
			return;
		}

		// do replace //
		int p1 = len - 1;
		int p2 = len - 1 + spaceCounter * 2;
		System.out.println(p1 + "\t" + p2);
		if (p2 >= str.length) {
			throw new RuntimeException("字符数组空间不够大，因大于" + (p2 + 1));
		}
		for (; p1 >= 0; p1--, p2--) {
			if (str[p1] == ' ') { // 替换成%20
				str[p2--] = '0';
				str[p2--] = '2';
				str[p2] = '%';
			} else {
				str[p2] = str[p1];
			}
		}
	}
}
